﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NakedObjects;
using System.ComponentModel;
using RTC.Modelo.UFC;
using FUFDomain.Undo;

namespace RTC.Modelo.Entidades.DatosPersonales
{
    [DisplayName("Solicitante")]
    [IconName("person.png")]
    public class DatosPersonales : Entidad
    {

        public void Created()
        {
            //this.UndoManager.IniUndoObject(this);
        }

        public override void Updating() {
            //this.UndoManager.SaveChange(this);
        }


        public void Loaded() {
            //this.UndoManager.IniUndoObject(this);
        }
        [Hidden]
        public virtual int Id { set; get; }


        #region Atributos del Objeto

        [Title,MemberOrder(0)]        
        public virtual String NombreCompleto
        {
            get
            {
                return this.Nombre + " " + this.Apellidos;
            }
        }

        [MemberOrder(1)]
        [UndoProperty]
        public virtual String NroDocumento { set; get; }

        [MemberOrder(2), Optionally]
        [UndoProperty]
        public virtual TipoDocumento TipoDocumento { set; get; }

        [MemberOrder(3)]
        [UndoProperty]
        public virtual String Nombre { set; get; }

        [MemberOrder(4)]
        [UndoProperty]
        public virtual String Apellidos { set; get; }


        [Hidden,Disabled, DisplayName("Fecha Modificacion")]
        public virtual DateTime ModifiedDate { get; set; }

        #endregion

        #region Metodos para relleno de las propiedades

        public IList<TipoDocumento> ChoicesTipoDocumento()
        {
          return  Container.Instances<TipoDocumento>().ToList<TipoDocumento>();
        }

        #endregion

        #region Mostrar Opcionalmente las propiedades
        public bool HideNombreCompleto()
        {
            return !Container.IsPersistent(this);
        }
        #endregion

        #region Comentarios (collection)

        private ICollection<ComentarioDatosPersonales> _ComentarioDatosPersonales = new List<ComentarioDatosPersonales>();

        public virtual ICollection<ComentarioDatosPersonales> Comentario
        {
            get
            {
                return _ComentarioDatosPersonales;
            }
            set
            {
                _ComentarioDatosPersonales = value;
            }
        }

        [DisplayName("Eliminar Comentario")]
        public void RemoveFromComentarioDatosPersonales(ComentarioDatosPersonales value)
        {
            if (_ComentarioDatosPersonales.Contains(value))
            {
                _ComentarioDatosPersonales.Remove(value);
            }
        }

        public IList<ComentarioDatosPersonales> Choices0RemoveFromComentarioDatosPersonales()
        {
            return _ComentarioDatosPersonales.ToList();
        }

        public Comentario CrearComentarioDatosPersonales()
        {
            ComentarioDatosPersonales c = Container.NewTransientInstance<ComentarioDatosPersonales>();
            c.DatosPersonales = this;
            return c;
        }

        #endregion


        [Hidden]
        protected override void SetModifiedDate()
        {
            ModifiedDate = DateTime.Now;
        }



    }
}
